import * as THREE from "three";
// ##########################################################################################################
// threejs的长方体 BoxGeometry、球体SphereGeometry等几何体都是基于BufferGeometry类构建的，
// BufferGeometry是一个没有任何形状的空几何体，
// 你可以通过BufferGeometry自定义任何几何形状，
// 具体一点说就是定义顶点数据。
// 创建一个空的几何体对象
const geometry = new THREE.BufferGeometry();
// 添加顶点数据
// 类型化数组定义的顶点数据
const vertices = new Float32Array([
    0, 0, 0, //第一个顶点坐标----0
    50, 0, 0, //第二个顶点坐标----1
    50, 50, 0, //第3个顶点坐标---2
    0,    0,    0, //第4个顶点坐标   重复坐标
    50,    50,    0, //第5个顶点坐标  重复坐标
    0, 50, 0, //第6个顶点坐标----3
]);

// BufferAttribute 属性缓冲对象表示顶点数据
// 3个数据为一组便是一个顶点
const attribue = new THREE.BufferAttribute(vertices, 3);
// 设置几何体的顶点位置属性
geometry.attributes.position = attribue;

// ----------------------  设置法线 ------------------------------
const norlmals = new Float32Array([
    0,0,1,//顶点1法向量
    0,0,1,//顶点2法向量
    0,0,1,//顶点3法向量
    0,0,1,//顶点4法向量
    0,0,1,//顶点5法向量
    0,0,1,//顶点6法向量
])
geometry.attributes.norlmal = new THREE.BufferAttribute(norlmals,3)
// 面材质
const material = new THREE.MeshLambertMaterial({
    color: 0xffffff,
    // side: THREE.DoubleSide,//两面可见
    // side: THREE.FrontSide,//默认，只有正面可见
    // side: THREE.BackSide//设置只有背面可见
});
// 点模型
const mian = new THREE.Mesh(geometry, material);
export default mian